package com.excesys.exsecs.access.entity;

import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 设备信息表
 *
 * @author lxc
 * @date 2024-05-06 17:44:39
 */
@Data
@TableName(value = "access_device_info", autoResultMap = true)
@EqualsAndHashCode(callSuper = true)
@Schema(description = "设备信息表")
public class AccessDeviceInfo extends Model<AccessDeviceInfo> {


	/**
	* 主键id
	*/
    @TableId(type = IdType.AUTO)
    @Schema(description="主键id")
    private Long id;

	/**
	* 设备id
	*/
    @Schema(description="设备id")
    private String unitNo;

	/**
	* 设备名称
	*/
    @Schema(description="设备名称")
	@TableField
    private String deviceName;

	/**
	 * 品类标识
	 */
	@Schema(description="品类标识")
	@TableField(exist = false)
	private String category;

	/**
	 * 品类标识名称
	 */
	@Schema(description="品类标识名称")
	@TableField(exist = false)
	private String categoryName;

	/**
	* 产品key
	*/
    @Schema(description="产品key")
    private String productKey;

	/**
	 * 使用状态：0-停用、1-启用
	 */
	@Schema(description="产品名称")
	private Integer useStatus;

	/**
	 * 产品名称
	 */
	@Schema(description="产品名称")
	@TableField(exist = false)
	private String productName;

	/**
	 * 产品图片
	 */
	@Schema(description="产品图片")
	@TableField(exist = false)
	private String productImg;

	/**
	 * 物模型-属性
	 */
	@Schema(description="产品名称")
	@TableField(exist = false)
	private List<JSONObject> properties;


	/**
	 * 物模型-服务
	 */
	@Schema(description="产品名称")
	@TableField(exist = false)
	private List<JSONObject> services;


	/**
	 * 物模型-事件
	 */
	@Schema(description="产品名称")
	@TableField(exist = false)
	private List<JSONObject> events;


	/**
	* 0-离线、1-在线
	*/
    @Schema(description="0-离线、1-在线")
    private Integer onlineStatus;

	/**
	 * 所属位置
	 */
	@Schema(description="所属位置")
	private String subareaCode;

	/**
	 * 所属位置名称
	 */
	@Schema(description="所属位置名称")
	@TableField(exist = false)
	private String subareaCn;

	/**
	 * 设置属性JSON
	 */
	@Schema(description="设置属性json")
	@TableField(typeHandler = FastjsonTypeHandler.class)
	private JSONObject staticProp;

	/**
	 * 备注
	 */
	@Schema(description="备注")
	private String remark;

	/**
	* 创建人
	*/
	@TableField(fill = FieldFill.INSERT)
    @Schema(description="创建人")
    private String createBy;

	/**
	* 创建时间
	*/
	@TableField(fill = FieldFill.INSERT)
    @Schema(description="创建时间")
    private LocalDateTime createTime;

	/**
	* 更新人
	*/
	@TableField(fill = FieldFill.INSERT_UPDATE)
    @Schema(description="更新人")
    private String updateBy;

	/**
	* 更新时间
	*/
	@TableField(fill = FieldFill.INSERT_UPDATE)
    @Schema(description="更新时间")
    private LocalDateTime updateTime;
}